iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Mobile Development

上班到一半突然被通知被炒了的我只好來寫個賓果系列 第 15

Day15 大家的時間是很珍貴的,所以來設個一鍵幫你輸入完全部數字

  • 分享至 

  • xImage
  •  

不知不覺,也過了一半,今天就來處理亂數按鈕,亂數按鈕大概會這樣設計,
先生成格數和按鈕一樣的陣列,產生一個亂數,然後去和陣列裡所有儲存的數字做比較,比較完之後,沒有重複就印進去按鈕&陣列裡儲存這個亂數,再來換下一格去做一樣的事情,直到所有格子都有數字。

首先要記得要先setOnClickListener亂數那個按鈕,但這次會放在按鈕生成之後才讓他(亂數按鈕)被監聽,因為如果沒有按鈕就按的話,他會不知道要把數字印到哪裡,然後就直接閃退GG給你看,為了避免這種事,所以才這樣做。
https://ithelp.ithome.com.tw/upload/images/20220912/201400637RCVPecj8r.png

m_binding.btnRandom.setOnClickListener(this);

https://ithelp.ithome.com.tw/upload/images/20220912/20140063RQKiM7z0Uu.png

private Random m_random = new Random();

onClick也要記得加~~
https://ithelp.ithome.com.tw/upload/images/20220912/2014006392tTKF3ply.png

if (R.id.btnRandom == view.getId()) {
   printRandom();
}

產生亂數:

private void printRandom() {
   for (int i = 0; i < m_iSize * m_iSize; i++) {
       m_alBingoButtons.get(i).saveNumber(0);
   }
   int iRandomNumber = 0; //用來暫時儲存產生的亂數
   boolean bRepeatFlag = true; //檢查是否重複

   for (int i = 0; i < m_alBingoButtons.size(); i++) {
       iRandomNumber = 0;
       bRepeatFlag = true;

       while (bRepeatFlag == true) {
           bRepeatFlag = false; //都false的話代表沒數字重複,可以換下個button產生
           iRandomNumber = m_random.nextInt(m_iSize * 10) + 1;

           //檢查產生亂數數值是否重複
           for (int j = 0; j < m_alBingoButtons.size(); j++) {
               if (iRandomNumber == m_alBingoButtons.get(j).getNumber()) { //檢查
                   bRepeatFlag = true; //true代表有重複,要重新產生亂數
                   break;
               }
           }
       }
       m_alBingoButtons.get(i).saveNumber(iRandomNumber); //把沒有重複的亂數放到陣列
   }
   for (int i = 0; i < m_alBingoButtons.size(); i++) {
       m_alBingoButtons.get(i).getButton().setText(String.valueOf(m_alBingoButtons.get(i).getNumber()));
       //將陣列儲存的數字印在按鈕上
   }

產生畫面:
https://ithelp.ithome.com.tw/upload/images/20220912/20140063tC14XCuECm.png

這樣就順利產生亂數啦~也可以弄上面的輸入數字去把亂數蓋掉,也可以順便測試看看數字重複會發生什麼事情。


上一篇
Day14 在dailog裡印 R.string 的字串 但印出來的只是一串數字時該怎麼辦
下一篇
Day16 進入賓果遊戲前的最後準備
系列文
上班到一半突然被通知被炒了的我只好來寫個賓果30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言